package com.bw.controller;

import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.bw.service.TmsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Map;

@RestController
public class TmsController {
    @Autowired
    TmsService tmsService;

    @RequestMapping("/findTotal")
    public Object findTotal(String  newDate){
//        1.拿到数据库中的数据List<Map> [{},{},{},...]
        List<Map> list = tmsService.findTotal(newDate);
//        2、返回大屏所需要的数据
//       第一层 需要{}
        JSONObject jsonObject = new JSONObject();
//        第二层 需要 status msg data
        jsonObject.put("status",0);
        jsonObject.put("msg","");
        jsonObject.put("data",list.get(0).get("total"));
        return jsonObject;
    }

    @RequestMapping("/findBing")
    public Object findBing(String  newDate){
//        1.拿到数据库中的数据
        List<Map> list = tmsService.findBing(newDate);
//        2.返回大屏所需要的数据
//        第一层  需要 对象{}
        JSONObject jsonObject = new JSONObject();
//        第二层 需要status msg data
        jsonObject.put("status",0);
        jsonObject.put("msg","");
//        第三层 需要[]
        JSONArray jsonArray = new JSONArray();
//        第四层 需要多个对象 {}
        for (Map map : list) {
            JSONObject dataObject = new JSONObject();
//            第五层 多个对象中需要  name value
            dataObject.put("name",map.get("name"));
            dataObject.put("value",map.get("zb"));
            jsonArray.add(dataObject);
        }
        jsonObject.put("data",jsonArray);

        return jsonObject;
    }
//    轮播图表格  统计各机构完成运输次数排名（开窗）
    @RequestMapping("/findOrg")
    public Object findOrg(String  newDate,String status){
//        1.拿到数据库中的数据
        List<Map> list = tmsService.findOrg(newDate, status);
//        2.返回大屏所需要的数据
//        第一层 需要 对象{}
        JSONObject jsonObject = new JSONObject();
//        第二层 需要status  msg data
        jsonObject.put("status",0);
        jsonObject.put("msg","");
//        第三层 需要对象  {}
        JSONObject dataObject = new JSONObject();
//        第四层  需要columns   []   表示列  确定的表头
//                    rows   []     表示行  确定具体的值
        JSONArray colArray = new JSONArray();
//    表头    4.1 需要 几个对象 取决于 几列
//        机构名称  运输次数  排名  需要是三个对象
        //        机构名称 第一个对象
        JSONObject  object = new JSONObject();
//           对象需要  name id
        object.put("name","机构名称");
        object.put("id","subsys");
        colArray.add(object);

        //        运输次数 第二个对象
        JSONObject  object1 = new JSONObject();
//           对象需要  name id
        object1.put("name","运输次数");
        object1.put("id","module");
        colArray.add(object1);

        //        排名 第二个对象
        JSONObject  object2 = new JSONObject();
//           对象需要  name id
        object2.put("name","排名");
        object2.put("id","business");
        colArray.add(object2);
        dataObject.put("columns",colArray);

//    行数     取决于数据库中有多行  遍历
        JSONArray rowsArray = new JSONArray();
        for (Map map : list) {
            JSONObject  object3 = new JSONObject();
//            需要  subsys   module   business
            object3.put("subsys",map.get("name")) ;
            object3.put("module",map.get("c") );
            object3.put("business",map.get("pm")) ;
            rowsArray.add(object3);
        }

        dataObject.put("rows",rowsArray);
        jsonObject.put("data",dataObject);
        return jsonObject;

    }
    
//    省份热力图
    @RequestMapping("/findPro")
    public Object findPro( String  newDate,String status){
//        1.拿到数据库中的数据
        List<Map> list = tmsService.findPro(newDate, status);
//        2.返回大屏所需要的数据
//        第一层  需要对象 {}
        JSONObject jsonObject = new JSONObject();
//        第二层  需要status msg data
        jsonObject.put("status",0);
        jsonObject.put("msg","");
//        第三层 需要对象 {}
        JSONObject dataObject = new JSONObject();
//        第四层 对象需要 mapData : []
        JSONArray jsonArray = new JSONArray();
//        第五层 数组需要 多个对象 {},{}... 遍历
        for (Map map : list) {
            JSONObject mapObject = new JSONObject();
//            第六层  多个对象需要 name value
            mapObject.put("name",map.get("name"));
            mapObject.put("value",map.get("c"));
            jsonArray.add(mapObject);
        }

        dataObject.put("mapData",jsonArray);
        jsonObject.put("data",dataObject);
        return jsonObject;
    }
    
}
